A data communications component like a NIC (network interface card) or a remote direct memory access NIC (RNIC) may have limited resources like ports, memory, connections, licenses, processor cycles, and so on. Undesired (e.g., unauthorized) consumption of these limited resources may negatively impact data communication functionality provided by a data communications component. For example, while an RNIC may be designed to support RDMA, if resources that support RDMA are unavailable due to undesired consumption, then the RDMA feature may be unavailable.
RDMA is a NIC feature that lets one computer directly place data into the memory of another computer with minimal CPU (central processing unit) intervention. Rather than a computer's CPU moving data, the CPU may program an RNIC to handle a desired data transfer. The RNIC moves the data and notifies the CPU when the transfer is complete. The CPU is less involved in the data transfer and has more cycles available for other concurrent tasks, thereby improving overall functionality in the RDMA configured computer. However, to benefit from RDMA, an RNIC may require relatively expensive and thus limited high speed internal memory. If limited resources are used up, then the RNIC may not be able to provide the RDMA services that it was designed to provide. While RDMA is described, it is to be appreciated that other data communication and networking functions can be negatively impacted by undesired resource consumption.
In some network protocols (e.g., TCP/IP (Transmission Control Protocol/Internet Protocol), UDP (User Datagram Protocol)), a port represents a logical endpoint. A port may be used by a client to specify a specific server program with which it desires to interact or a specific server resource that it wishes to access. For example, a port may be associated with an RDMA service.
To facilitate making connections over a computer network via ports, some ports may have numbers and/or addresses that are pre-assigned. These types of ports may be called “well-known ports” and the first actions taken when establishing a connection may involve these “well-known” ports. One well-known port may be associated with a port mapper that facilitates finding and/or interacting with an available service. A port mapper may be implemented in software, firmware, hardware, and combinations thereof. A port mapper may map a resource, program, service, and so on to a transport-specific port number that can be made known to a requesting client via mapping data distributed in response to a request for mapping data. This facilitates a client dynamically binding to, using, and/or communicating with the mapped programs, services, resources, and so on. However, unprotected distribution of mapping data can lead to undesired consumption of limited networking resources.
A requesting client may communicate via a well-known port with a port mapper to request mapping data concerning with which server port a resource is associated. The requesting client may receive the port/resource mapping data from the port mapper and then request that a connection be established to facilitate accessing the resource by using the provided mapping data. However, not all connections are desirable. Connections consume resources, and a connection may be acquired by an undesirable and/or mis-appropriating client. Once the connection is established, it may persist until disconnected by the client or until an error occurs. Similarly, a connection may be acquired unwisely or in an untimely manner, which can lead to undesired consumption of limited resources, which can in turn lead to undesired results.